package org.cyclopsgroup.jmxterm.cc; import static org.junit.Assert.assertEquals; import java.beans.IntrospectionException; import java.io.IOException; import java.io.StringWriter; import java.util.Arrays; import java.util.HashSet; import org.apache.commons.lang.SystemUtils; import org.cyclopsgroup.jmxterm.MockSession; import org.cyclopsgroup.jmxterm.SelfRecordingCommand; import org.jmock.Expectations; import org.jmock.Mockery; import org.jmock.lib.legacy.ClassImposteriser; import org.junit.Before; import org.junit.Test; /** * Test case for {@link HelpCommand} * * @author <a href="mailto:jiaqi.guo@gmail.com">Jiaqi Guo</a> */ public class HelpCommandTest { private HelpCommand command; private Mockery context; private StringWriter output; /** * Set up objects to test */ @Before public void setUp() { command = new HelpCommand(); output = new StringWriter(); context = new Mockery(); context.setImposteriser( ClassImposteriser.INSTANCE ); } /** * Test execution with several options * * @throws IOException * @throws IntrospectionException */ @Test public void testExecuteWithOption() throws IOException, IntrospectionException { command.setArgNames( Arrays.asList( "a", "b" ) ); final CommandCenter cc = context.mock( CommandCenter.class ); command.setCommandCenter( cc ); context.checking( new Expectations() { { one( cc ).getCommandType( "a" ); will( returnValue( SelfRecordingCommand.class ) ); one( cc ).getCommandType( "b" ); will( returnValue( SelfRecordingCommand.class ) ); } } ); command.setSession( new MockSession( output, null ) ); command.execute(); context.assertIsSatisfied(); } /** * Test execution without option * * @throws IOException */ @Test public void testExecuteWithoutOption() throws IOException { final CommandCenter cc = context.mock( CommandCenter.class ); command.setCommandCenter( cc ); context.checking( new Expectations() { { one( cc ).getCommandNames(); will( returnValue( new HashSet<String>( Arrays.asList( "a", "b" ) ) ) ); one( cc ).getCommandType( "a" ); will( returnValue( SelfRecordingCommand.class ) ); one( cc ).getCommandType( "b" ); will( returnValue( SelfRecordingCommand.class ) ); } } ); command.setSession( new MockSession( output, null ) ); command.execute(); assertEquals( "a - desc" + SystemUtils.LINE_SEPARATOR + "b - desc", output.toString().trim() ); } }